package com.hljx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hljx.dto.AccountingDataPageDTO;
import com.hljx.dto.ExportAccountingUnitDTO;
import com.hljx.vo.AccountingUnitDataVO;
import com.hljx.vo.AccountingUnitsVO;
import com.hljx.dto.AccountingUnitDTO;
import com.hljx.dto.AccountingUnitPageDTO;
import com.hljx.entity.SysAccountingUnit;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hljx.vo.TargetSysDictVO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 核算单元管理 服务类
 * </p>
 *
 * @author gx
 * @since 2023-09-18
 */
public interface SysAccountingUnitService extends IService<SysAccountingUnit> {

    /**
     * 核算单元下拉-查询所有核算单元
     * @return
     */
    List<SysAccountingUnit> listAllAccountingUnit();

    /**
     * 保存或编辑核算单元
     * @param accountingUnitDTO
     * @return
     */
    Boolean saveOrUpdate(AccountingUnitDTO accountingUnitDTO);

    /**
     * 分页查询核算单元
     * @param accountingUnitPageDTO
     * @return
     */
    IPage<AccountingUnitsVO> listAccountingUnitByPage(AccountingUnitPageDTO accountingUnitPageDTO);

    /**
     * 删除核算单元
     * @param id
     * @return
     */
    Boolean removeAccountingById(Long id);

    /**
     * 分页查询系统数据
     * @param accountingDataPageDTO
     * @return
     */
    List<AccountingUnitDataVO> listAccountingDataByPage(AccountingDataPageDTO accountingDataPageDTO);


    /**
     * 导出和下载模板
     * @param dto
     * @param response
     */
    void export(ExportAccountingUnitDTO dto, HttpServletResponse response) throws ClassNotFoundException;

    /**
     * 文件导入
     *
     * @param file     文件
     * @param response 返回信息
     * @throws ClassNotFoundException 实体类未找到
     */
    void importExcel(MultipartFile file, HttpServletResponse response) throws ClassNotFoundException, IOException;


    List<TargetSysDictVO> sysAccountingUnitPull();
    List<TargetSysDictVO>  HISDeptCode();

}
